package com.toe.forum.service;

import com.toe.common.restful.JsonPage;
import com.toe.pojo.dto.forum.EnshrineArticleAddDTO;
import com.toe.pojo.dto.forum.EnshrineArticleUpdateDTO;
import com.toe.pojo.entity.forum.UserEnshrineArticle;
import com.baomidou.mybatisplus.extension.service.IService;
import com.toe.pojo.vo.forum.EnshrineArticleVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 用户收藏文章表 服务类
 * </p>
 *
 * @author 陶涛
 * @since 2022-07-19
 */
public interface UserEnshrineArticleService extends IService<UserEnshrineArticle> {

    /**
     * 添加用户收藏文章映射
     * @param enshrineArticleAddDTO
     */
    void insert(EnshrineArticleAddDTO enshrineArticleAddDTO);

    /**
     * 删除用户收藏文章映射
     * @param id
     */
    void deleteById(long id);

    /**
     * 删除指定的收藏记录
     * @param userId
     * @param articleId
     */
    void delete(long userId,long articleId);

    /**
     * 修改映射表(基本用户到)
     * @param enshrineArticleUpdateDTO
     */
    void updateUserEnshrineArticle(EnshrineArticleUpdateDTO enshrineArticleUpdateDTO);

    /**
     * 查询所有的收藏记录
     * @return
     */
    List<EnshrineArticleVO> selectAllEnshrine();

    /**
     * 分页查询所有的收藏记录
     * @param pageNum
     * @param pageSize
     * @return
     */
    JsonPage<EnshrineArticleVO> selectAllEnshrinePage(Integer pageNum,Integer pageSize);

    /**
     * 查询某篇文章的全部收藏记录
     * @param articleId
     * @return
     */
    List<EnshrineArticleVO> selectAllEnshrineByArticleId(long articleId);

    /**
     * 分页查询某篇文章的全部收藏记录
     * @param articleId
     * @param pageNum
     * @param pageSize
     * @return
     */
    JsonPage<EnshrineArticleVO> selectAllEnshrineByArticleIdPage(long articleId,Integer pageNum,Integer pageSize);

    /**
     * 查询指定的收藏记录
     * @param userId
     * @param articleId
     * @return
     */
    EnshrineArticleVO selectEnshrineById(long userId,long articleId);
}
